package com.hdphone.zljutils.inter;

import com.hdphone.zljutils.impl.RomUtilImpl;

import androidx.annotation.Nullable;

/**
 * @author sq
 * @date 2020/10/19
 * @describe
 */
public interface IRomUtil {


    /**
     * Return whether the rom is made by huawei.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isHuawei();

    /**
     * Return whether the rom is made by vivo.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isVivo();

    /**
     * Return whether the rom is made by xiaomi.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isXiaomi();

    /**
     * Return whether the rom is made by oppo.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isOppo();

    /**
     * Return whether the rom is made by realme.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isRealMe();

    /**
     * Return whether the rom is made by leeco.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isLeeco();

    /**
     * Return whether the rom is made by 360.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean is360();

    /**
     * Return whether the rom is made by zte.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isZte();

    /**
     * Return whether the rom is made by oneplus.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isOneplus();

    /**
     * Return whether the rom is made by nubia.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isNubia();

    /**
     * Return whether the rom is made by coolpad.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isCoolpad();

    /**
     * Return whether the rom is made by lg.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isLg();

    /**
     * Return whether the rom is made by google.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isGoogle();

    /**
     * Return whether the rom is made by samsung.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isSamsung();

    /**
     * Return whether the rom is made by meizu.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isMeizu();

    /**
     * Return whether the rom is made by lenovo.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isLenovo();

    /**
     * Return whether the rom is made by smartisan.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isSmartisan();

    /**
     * Return whether the rom is made by htc.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isHtc();

    /**
     * Return whether the rom is made by sony.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isSony();

    /**
     * Return whether the rom is made by gionee.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isGionee();

    /**
     * Return whether the rom is made by motorola.
     *
     * @return {@code true}: yes<br>{@code false}: no
     */
    boolean isMotorola();

    /**
     * 是否为荣耀
     * @return
     */
    boolean isHonor();

    /**
     * 是否为美图
     * @return
     */
    boolean isMeitu();

    /**
     * 是否为vivo升降摄像头
     * @return
     */
    boolean isVivoLiftCamera();

    /**
     * 获取cpu架构
     * @return
     */
    @Nullable
    String getCpuAbi();

    /**
     * 是否为iqoo手机
     * @return
     */
    boolean isIqoo();

    /**
     * 获取rom信息
     * @return
     */
    RomUtilImpl.RomInfo getRomInfo();

    /**
     * 获取手机型号
     * @return
     */
    String getModel();

    /**
     * 是否为双卡手机
     * @return 默认为true
     */
    boolean isDoubleSim();

    /**
     * 获取运行内存大小
     * @return
     */
    long getRomSize();

    /**
     * 获取运行内存大小(带单位)
     * @return
     */
    String getRomSizeWithUnit();

    /**
     * 获取sd卡大小
     * @return
     */
    String getSdCardTotalSizeWithUnit();

    /**
     * 获取安卓版本号
     * @return
     */
    String getSystemCode();

    /**
     * 获取app版本号
     * @return
     */
    String getAppVersionCode();

    /**
     * 获取app版本名称
     * @return
     */
    String getAppVersionName();

    /**
     * 获取imei,android 10以下
     * @return
     */
    String getImei();

    /**
     * 获取序列号,android10以下
     * @return
     */
    String getSerialNo();

    String getCPUCodeName();

    /**
     * 获取小型号的市场名称
     * @return
     */
    @Nullable
    String getMarketName();

    @Nullable String getHuaweiEmuiVersion();

    /**
     * 获取手机品牌
     * @return
     */
    String getBrand();

    /**
     * get system property by adb
     * @param prop
     * @return
     */
    String getSystemPropertyByShell(String prop);
}
